/**
 * 
 */
package qy.jalgotrade.broker.backtesting;

import java.time.ZonedDateTime;

import qy.jalgotrade.bar.Bar;
import qy.jalgotrade.broker.fillstrategy.FillInfo;

/**
 * Orders
 * 
 * @author qy
 *
 */
public interface BacktestingOrder {

	/**
	 * 
	 * @return
	 */
	ZonedDateTime getAcceptedDateTime();

	/**
	 * 
	 * @param dateTime
	 */
	void setAcceptedDateTime(ZonedDateTime dateTime);

	/**
	 * <pre>
	 * Override to call the fill strategy using the concrete order type.
	 * 
	 * return FillInfo or None if the order should not be filled.
	 * </pre>
	 * 
	 * @param broker
	 * @param bar
	 * @return
	 */
	FillInfo process(BacktestingBroker broker, Bar bar);
}
